import LinkedList from "../LinkedList";

export default class Stack<T> extends LinkedList<T> {
    constructor() {
        super()
    }

    size(): number {
        return super.length()
    }

    /**
     * 向堆栈里添加元素
     * @param value 向堆栈内添加的元素的值
     */
    push(value: T) {
        super.insert(value)
    }

    /**
     * 从栈顶移出元素
     * @returns 从栈顶移出的堆栈的值
     */
    pop(): T | undefined {
        return super.removeFirst()
    }

    /**
     * 获取栈顶元素
     * @returns 栈顶元素的值
     */
    top(): T | undefined {
        return super.getFirst()
    }
}